/*
 * Copyright 2010 Katsunori Koyanagi
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package sweezy.anim.action
{
	import sweezy.anim.core.IAction;

	public class ActionBase implements IAction
	{

		private var _executed:Boolean;

		public function ActionBase()
		{
			_executed = false;
		}

		public function execute():void
		{
			if (_executed)
			{
				return;
			}

			_executed = true;
			doExecute();
		}

		public function get executed():Boolean
		{
			return _executed;
		}

		public function rollback():void
		{
			if (!_executed)
			{
				return;
			}

			_executed = false;
			doRollback();
		}

		protected function doExecute():void
		{
		}

		protected function doRollback():void
		{
		}
	}
}
